/**
 * 上上签刷脸工具类
 * @param {String} bestSignAppid  	- 上上签刷脸小程序appId
 * @param {String} webviewPath  	- 应用webview页面路径
 * @param {String} busScene  	- 应用业务场景
 *
 */

export default class bestSignFaceUtils {
  constructor(webviewPath, busScene) {
    this.bestSignAppid = 'wx6dd34865858963a5' // 上上签刷脸小程序appId, 不可更改
    this.faceWebviewPath = webviewPath // 应用webview页面路径
    this.scene = busScene // 应用业务场景
  }

  // 处理一些跳转上上签刷脸小程序的参数 不可变动
  _handleParams(receiveH5PageData) {
    const sceneVersion = this._getBestSignSceneVersion(receiveH5PageData)
    if (sceneVersion === 'BestSignProVersion') {
      // 如果是旗舰版
      // 上上签刷脸小程序需要的参数
      const ssqParams = receiveH5PageData.ssqFaceQuery
      console.log('刷脸小程序需要的参数:', decodeURIComponent(ssqParams))
      // 上上签 H5 页面对应的webview路径，需要主动跳回
      let webviewContentUrl = receiveH5PageData.ssqPageUrl
      console.log('上上签页面对应的webview路径:', decodeURIComponent(webviewContentUrl))
      // url编码的webview路径
      webviewContentUrl = encodeURIComponent(webviewContentUrl)
      return {
        ssqParams,
        webviewContentUrl,
      }
    }
    // 上上签刷脸小程序需要的参数
    const ssqParams = receiveH5PageData.ssqParams
    console.log('刷脸小程序需要的参数:', decodeURIComponent(ssqParams))
    // 上上签 H5 页面对应的webview路径，需要主动跳回
    const webviewContentUrl = receiveH5PageData.ssqPageUrl
    console.log('上上签页面对应的webview路径:', decodeURIComponent(webviewContentUrl))
    return {
      ssqParams,
      webviewContentUrl,
    }
  }

  // 获取当前刷脸的场景
  _getBestSignSceneVersion(receiveH5PageData) {
    const messageType = receiveH5PageData.messageType
    if (messageType === 'face') {
      // 旗舰版
      return 'BestSignProVersion'
    } else if (messageType === 'ssqFace') {
      // 工具版
      return 'BestSignOpenApiVersion'
    }
  }
  // 是否为上上签刷脸类型的H5消息
  _isBestSignFaceType(receiveH5PageData) {
    const messageType = receiveH5PageData.messageType
    console.log('消息类型:', messageType)
    // 判断messageType为ssqFace或者face时，需要跳转上上签刷脸小程序
    return messageType === 'ssqFace' || messageType === 'face'
  }

  // 跳转至上上签刷脸小程序
  _jumpFaceMiniProgram(receiveH5PageData) {
    const isBestSignFaceType = this._isBestSignFaceType(receiveH5PageData)
    if (!isBestSignFaceType) return
    const { ssqParams, webviewContentUrl } = this._handleParams(receiveH5PageData)
    const sceneVersion = this._getBestSignSceneVersion(receiveH5PageData)
    let path = `index/index?${ssqParams}` //默认为工具版路径
    if (sceneVersion === 'BestSignProVersion') {
      path = `index/index?ssqFaceQuery=${ssqParams}` // 旗舰版路径
    }
    wx.showModal({
      title: '提示',
      content: '请点击“确定”跳到新的小程序完成刷脸',
      success: (res) => {
        if (res.confirm) {
          wx.navigateToMiniProgram({
            appId: this.bestSignAppid, // 上上签刷脸小程序appId, 不可更改
            path, // 约定参数，不可更改
            envVersion: 'release', // 使用正式版，不可更改
            success: () => {
              wx.showModal({
                title: '提示',
                content: '是否已经完成刷脸',
                success: (res) => {
                  if (res.confirm) {
                    wx.navigateTo({
                      url: `${this.faceWebviewPath}?webviewPath=${webviewContentUrl}&scene=${this.scene}`,
                    })
                  }
                },
              })
            },
            fail: (err) => {
              console.log(err)
            },
          })
        } else if (res.cancel) {
          wx.navigateTo({
            url: `${this.faceWebviewPath}?webviewPath=${webviewContentUrl}&scene=${this.scene}`,
          })
        }
      },
    })
  }
}
